package main

import (
	"encoding/json"
	"fmt"
	"go_server/components"
	"go_server/netmodule"
	"os"
	"os/signal"
	"syscall"
	"time"

	"github.com/astaxie/beego/logs"
	//"github.com/astaxie/beego/logs"
)

func main() {
	components.InitTcpConfig() //主要是进行了配置文件的读取，以及日志相关的配置

	netmodule.RegisterRpcFunc("firstRpc", func(data any) any {
		//将json字符串自行转成特定的数据结构
		var trueData netmodule.RpcGetData
		json.Unmarshal([]byte(data.(string)), &trueData)

		//trueData = data.(netmodule.RpcGetData)
		fmt.Println("firstRpc收到的数据:", trueData)
		time.Sleep(2 * time.Second)
		fmt.Println("模拟超时完毕，开始回包")
		return netmodule.RpcReturnData{
			Name: "firstRpc",
			Age:  18,
			Sex:  "man",
			Info: "this is firstRpc",
		}
	})
	netmodule.NewTcpServer() //这里就是开启--非阻塞
	stopsignal := make(chan os.Signal, 1)
	var shutdownSignals = []os.Signal{os.Interrupt, syscall.SIGTERM, syscall.SIGINT}
	signal.Notify(stopsignal, shutdownSignals...)
	//可能会由拓展
	sign := <-stopsignal
	fmt.Println("捕获到信号：", sign)
	logs.Info("捕获到信号：", sign)
	netmodule.ExitProgram()
}
